!function (t) {
    "use strict";

    function o(t) {
        return {
            set: function (e, i) {
                t.setItem(e, n.serialize(i))
            }, get: function (e) {
                return n.deserialize(t.getItem(e))
            }, remove: function (e) {
                t.removeItem(e)
            }, clear: function () {
                t.clear()
            }
        }
    }

    var e = t.document, i = {};
    $(t).on("load", function () {
        "function" == typeof FastClick && FastClick.attach(e.body)
    });
    var n = i.util = {
        parseOptions: function (t) {
            if ($.isPlainObject(t)) return t;
            var e = t ? t.indexOf("{") : -1, i = {};
            if (-1 != e) try {
                i = new Function("", "var json = " + t.substr(e) + "; return JSON.parse(JSON.stringify(json));")()
            } catch (t) {
            }
            return i
        }, pageScroll: function () {
            var t = function (t) {
                t.preventDefault(), t.stopPropagation()
            }, i = !1;
            return {
                lock: function () {
                    i || (i = !0, e.addEventListener("touchmove", t))
                }, unlock: function () {
                    i = !1, e.removeEventListener("touchmove", t)
                }
            }
        }(), localStorage: function () {
            return o(t.localStorage)
        }(), sessionStorage: function () {
            return o(t.sessionStorage)
        }(), serialize: function (t) {
            return "string" == typeof t ? t : JSON.stringify(t)
        }, deserialize: function (t) {
            if ("string" == typeof t) try {
                return JSON.parse(t)
            } catch (e) {
                return t || void 0
            }
        }
    };
    $.fn.emulateTransitionEnd = function (t) {
        var e = !1, i = this;
        $(this).one("webkitTransitionEnd", function () {
            e = !0
        });
        var n = function () {
            e || $(i).trigger("webkitTransitionEnd")
        };
        setTimeout(n, t)
    }, "function" == typeof define ? define(i) : t.YDUI = i
}(window), function (t) {
    var e = t.document, i = t.YDUI, n = t.navigator && t.navigator.userAgent || "",
        o = !!n.match(/(iPad).*OS\s([\d_]+)/), a = !!n.match(/(iPod)(.*OS\s([\d_]+))?/),
        r = !o && !!n.match(/(iPhone\sOS)\s([\d_]+)/);
    i.device = {
        isMobile: !!n.match(/AppleWebKit.*Mobile.*/) || "ontouchstart" in e.documentElement,
        isIOS: !!n.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
        isAndroid: !!n.match(/(Android);?[\s\/]+([\d.]+)?/),
        isIpad: o,
        isIpod: a,
        isIphone: r,
        isWebView: (r || o || a) && !!n.match(/.*AppleWebKit(?!.*Safari)/i),
        isWeixin: n.indexOf("MicroMessenger") > -1,
        isMozilla: /firefox/.test(navigator.userAgent.toLowerCase()),
        pixelRatio: t.devicePixelRatio || 1
    }
}(window), function (t) {
    t.document.addEventListener("touchstart", function (t) {
    }, !1)
}(window), function (t) {
    "use strict";

    function i(t, e) {
        this.$element = $(t), this.options = $.extend({}, i.DEFAULTS, e || {}), this.init()
    }

    function n(t) {
        return this.each(function () {
            new i(this, t)
        })
    }

    var e = t.YDUI.util;
    i.DEFAULTS = {
        binder: t,
        initLoad: !0,
        pageSize: 0,
        loadingHtml: "加载中...",
        doneTxt: "没有更多数据了",
        backposition: !1,
        jumpLink: "",
        loadListFn: null,
        loadStorageListFn: null
    }, i.prototype.init = function () {
        var i = this, n = i.options, o = t.location;
        if (~~n.pageSize <= 0) return void console.error("[YDUI warn]: 需指定pageSize参数【即每页请求数据的长度】");
        var a = o.pathname.toUpperCase().replace(/\/?\.?/g, "");
        a || (a = "YDUI_" + o.host.toUpperCase().replace(/\/?\.?:?/g, "")), i.backParamsKey = a + "_BACKPARAMS", i.backParamsListKey = a + "_LIST_", i.$element.append(i.$tag = $('<div class="J_InfiniteScrollTag"></div>')), i.listOffsetTop = i.$element.offset().top, i.initLoadingTip(), n.initLoad && (n.backposition ? !e.sessionStorage.get(i.backParamsKey) && i.loadList() : i.loadList()), i.bindScrollEvent(), n.backposition && (i.loadListFromStorage(), i.bindLinkEvent())
    }, i.prototype.initLoadingTip = function () {
        var t = this;
        t.$element.append(t.$loading = $('<div class="list-loading">' + t.options.loadingHtml + "</div>"))
    }, i.prototype.scrollPosition = function () {
        var t = this, i = t.options, n = $(i.binder), o = e.sessionStorage.get(t.backParamsKey);
        o && n.stop().animate({scrollTop: o.offsetTop}, 0, function () {
            t.scrolling = !1
        }), i.backposition && t.bindLinkEvent(), e.pageScroll.unlock(), e.sessionStorage.remove(t.backParamsKey)
    }, i.prototype.bindScrollEvent = function () {
        var e = this, i = $(e.options.binder), n = i.get(0) === t, o = n ? $(t).height() : i.height();
        i.on("scroll.ydui.infinitescroll", function () {
            if (!e.loading && !e.isDone) {
                var a = n ? $(t).scrollTop() : i.offset().top;
                e.$tag.offset().top <= a + o + o / 10 && e.loadList()
            }
        })
    }, i.prototype.bindLinkEvent = function () {
        var t = this;
        if (!t.options.jumpLink) return void console.error("[YDUI warn]: 需指定跳转详情页链接元素");
        $(t.options.binder).on("click.ydui.infinitescroll", t.options.jumpLink, function (i) {
            i.preventDefault();
            var n = $(this), o = n.data("page");
            if (!o) return void console.error('[YDUI warn]: 跳转链接元素需添加属性[data-page="其所在页码"]');
            e.sessionStorage.set(t.backParamsKey, {
                offsetTop: $(t.options.binder).scrollTop() + n.offset().top - t.listOffsetTop,
                page: o
            }), location.href = n.attr("href")
        })
    }, i.prototype.loadList = function () {
        var t = this, i = t.options;
        t.loading = !0, t.$loading.show(), "function" == typeof i.loadListFn && i.loadListFn().done(function (n, o) {
            var a = n.length;
            if (~~a <= 0) return void console.error("[YDUI warn]: 需在 resolve() 方法里回传本次获取记录集合");
            a < i.pageSize && (t.$element.append('<div class="list-donetip">' + i.doneTxt + "</div>"), t.isDone = !0), t.$loading.hide(), t.loading = !1, i.backposition && e.sessionStorage.set(t.backParamsListKey + o, n)
        })
    }, i.prototype.loadListFromStorage = function () {
        var t = this, i = e.sessionStorage.get(t.backParamsKey);
        if (i) {
            e.pageScroll.lock();
            for (var n = i.page, o = [], a = 1; a <= n; a++) {
                var r = e.sessionStorage.get(t.backParamsListKey + a);
                o.push({
                    page: a,
                    list: r
                }), a == n && r.length < t.options.pageSize && (t.$element.append('<div class="list-donetip">' + t.options.doneTxt + "</div>"), t.$loading.hide(), t.loading = !1, t.isDone = !0)
            }
            t.options.loadStorageListFn(o, n + 1).done(function () {
                t.scrollPosition()
            })
        }
    }, $.fn.infiniteScroll = n
}(window), function (t) {
    "use strict";

    function e(t, i) {
        this.$element = $(t), this.options = $.extend({}, e.DEFAULTS, i || {}), this.init()
    }

    function i(t) {
        return this.each(function () {
            new e(this, t)
        })
    }

    e.DEFAULTS = {loadListFn: null, initLoad: !0, distance: 100}, e.prototype.init = function () {
        var t = this, e = t.touches;
        t.$dragTip = $('<div class="pullrefresh-dragtip"><span></span></div>'), t.$element.after(t.$dragTip), t.offsetTop = t.$element.offset().top, t.initTip(), t.bindEvent(), t.options.initLoad && (e.loading = !0, "function" == typeof t.options.loadListFn && t.options.loadListFn().done(function () {
            e.loading = !1
        }))
    }, e.prototype.bindEvent = function () {
        var t = this;
        t.$element.on("touchstart.ydui.pullrefresh", function (e) {
            t.onTouchStart(e)
        }).on("touchmove.ydui.pullrefresh", function (e) {
            t.onTouchMove(e)
        }).on("touchend.ydui.pullrefresh", function (e) {
            t.onTouchEnd(e)
        }), t.stopWeixinDrag()
    }, e.prototype.touches = {
        loading: !1,
        startClientY: 0,
        moveOffset: 0,
        isDraging: !1
    }, e.prototype.stopWeixinDrag = function () {
        var t = this;
        $(document.body).on("touchmove.ydui.pullrefresh", function (e) {
            t.touches.isDraging && e.preventDefault()
        })
    }, e.prototype.onTouchStart = function (t) {
        var e = this;
        if (e.touches.loading) return void t.preventDefault();
        e.$element.offset().top < e.offsetTop || (e.touches.startClientY = t.originalEvent.touches[0].clientY)
    }, e.prototype.onTouchMove = function (t) {
        var e = this, i = t.originalEvent.touches[0];
        if (e.touches.loading) return void t.preventDefault();
        if (!(e.touches.startClientY > i.clientY || e.$element.offset().top < e.offsetTop || e.touches.loading)) {
            e.touches.isDraging = !0;
            var n = i.clientY - e.touches.startClientY;
            e.$dragTip.find("span").css("opacity", n / 100), n >= e.options.distance && (n = e.options.distance), e.$dragTip.find("span").css("transform", "rotate(" + n / .25 + "deg)"), e.touches.moveOffset = n, e.moveDragTip(n)
        }
    }, e.prototype.onTouchEnd = function (t) {
        var e = this, i = e.touches;
        if (i.loading) return void t.preventDefault();
        if (!(e.$element.offset().top < e.offsetTop)) {
            if (e.$dragTip.addClass("pullrefresh-animation-timing"), i.moveOffset >= e.options.distance) return e.moveDragTip(e.options.distance / 1.5), e.$dragTip.find("span").addClass("pullrefresh-loading"), void e.triggerLoad();
            e.touches.isDraging = !1, e.resetDragTip(), e.resetLoading()
        }
    }, e.prototype.triggerLoad = function () {
        var t = this;
        t.touches.loading = !0, "function" == typeof t.options.loadListFn && t.options.loadListFn().done(function () {
            setTimeout(function () {
                t.$dragTip.css({transform: "translate3d(0px, " + t.options.distance / 1.5 + "px, 0px) scale(0)"}), t.resetDragTip()
            }, 200)
        })
    }, e.prototype.resetLoading = function () {
        var t = this;
        t.moveDragTip(0), t.$dragTip.find("span").removeClass("pullrefresh-loading").css({
            opacity: .5,
            transform: "rotate(0deg)"
        })
    }, e.prototype.resetDragTip = function () {
        var t = this, e = t.touches;
        setTimeout(function () {
            e.isDraging = !1, e.loading = !1, e.moveOffset = 0, t.moveDragTip(0), t.resetLoading(), t.$dragTip.removeClass("pullrefresh-animation-timing")
        }, 150)
    }, e.prototype.moveDragTip = function (t) {
        this.$dragTip.css({transform: "translate3d(0," + t + "px,0) scale(1)"})
    }, e.prototype.initTip = function () {
        var e = this, i = t.localStorage;
        "YDUI" != i.getItem("LIST-PULLREFRESH-TIP") && (e.$tip = $('<div class="pullrefresh-draghelp"><div><span>下拉更新</span></div></div>'), e.$tip.on("click.ydui.pullrefresh", function () {
            $(this).remove()
        }), e.$element.after(e.$tip), i.setItem("LIST-PULLREFRESH-TIP", "YDUI"), setTimeout(function () {
            e.$tip.remove()
        }, 5e3))
    }, $.fn.pullRefresh = i
}(window), function (t) {
    "use strict";

    function e(t, i) {
        this.$element = $(t), this.options = $.extend({}, e.DEFAULTS, i || {}), this.init()
    }

    e.DEFAULTS = {
        attr: "data-url",
        binder: t,
        placeholder: ""
    }, e.prototype.init = function () {
        var e = this;
        e.bindImgEvent(), e.loadImg(), $(e.options.binder).on("scroll.ydui.lazyload", function () {
            e.loadImg()
        }), $(t).on("resize.ydui.lazyload", function () {
            e.loadImg()
        })
    }, e.prototype.loadImg = function () {
        var e = this, i = e.options, n = $(i.binder), o = n.height(),
            a = n.get(0) === t ? $(t).scrollTop() : n.offset().top;
        e.$element.each(function () {
            var t = $(this), e = t.offset().top - a, i = e + t.height();
            (e >= 0 && e < o || i > 0 && i <= o) && t.trigger("appear.ydui.lazyload")
        })
    }, e.prototype.bindImgEvent = function () {
        var t = this, e = t.options;
        t.$element.each(function () {
            var t = $(this);
            t.is("img") && !t.attr("src") && t.attr("src", e.placeholder), t.one("appear.ydui.lazyload", function () {
                t.is("img") && t.attr("src", t.attr(e.attr))
            })
        })
    }, $.fn.lazyLoad = function (t) {
        new e(this, t)
    }
}(window), function (t) {
    "use strict";

    function o(t, e) {
        this.$element = $(t), this.options = $.extend({}, o.DEFAULTS, e || {}), this.init()
    }

    function a(t) {
        var e = Array.prototype.slice.call(arguments, 1);
        return this.each(function () {
            var i = $(this), n = i.data("ydui.keyboard");
            n || i.data("ydui.keyboard", n = new o(this, t)), "string" == typeof t && n[t] && n[t].apply(n, e)
        })
    }

    var e = $(t.document.body),
        i = !!(t.navigator && t.navigator.userAgent || "").match(/AppleWebKit.*Mobile.*/) || "ontouchstart" in t.document.documentElement,
        n = i ? "touchstart" : "click";
    o.DEFAULTS = {disorder: !1, title: "安全键盘"}, o.prototype.init = function () {
        function e() {
            for (var t = "", e = 0; e < 6; e++) t += "<li><i></i></li>";
            return t
        }

        var t = this;
        t.inputNums = "", t.toggleClass = "keyboard-show";
        var i = '<div class="keyboard-head"><strong>输入数字密码</strong></div><div class="keyboard-error"></div><ul class="keyboard-password J_FillPwdBox">' + e() + "</ul>",
            n = '<div class="keyboard-content">   <div class="keyboard-title">' + t.options.title + '</div>   <ul class="keyboard-numbers"></ul></div>';
        t.$element.prepend(i).append(n), t.$numsBox = t.$element.find(".keyboard-numbers"), t.$mask = $('<div class="mask-black"></div>')
    }, o.prototype.open = function () {
        var t = this, i = t.$element, n = t.$numsBox;
        YDUI.device.isIOS && $(".g-scrollview").addClass("g-fix-ios-overflow-scrolling-bug"), i.addClass(t.toggleClass), (t.options.disorder || 1 != n.data("loaded-nums")) && n.data("loaded-nums", 1).html(t.createNumsHtml()), e.append(t.$mask), t.bindEvent()
    }, o.prototype.close = function () {
        var t = this;
        YDUI.device.isIOS && $(".g-scrollview").removeClass("g-fix-ios-overflow-scrolling-bug"), t.$mask.remove(), t.$element.removeClass(t.toggleClass), t.unbindEvent(), t.inputNums = "", t.fillPassword(), t.clearError()
    }, o.prototype.bindEvent = function () {
        var t = this, e = t.$element;
        t.$mask.on(n + ".ydui.keyboard.mask", function (e) {
            e.preventDefault(), t.close()
        }), e.on(n + ".ydui.keyboard.nums", ".J_Nums", function (e) {
            t.inputNums.length >= 6 || (t.inputNums = t.inputNums + $(this).html(), t.clearError(), t.fillPassword())
        }), e.on(n + ".ydui.keyboard.backspace", ".J_Backspace", function (e) {
            e.preventDefault(), t.backspace()
        }), e.on(n + ".ydui.keyboard.cancel", ".J_Cancel", function (e) {
            e.preventDefault(), t.close()
        })
    }, o.prototype.unbindEvent = function () {
        this.$element.off(n + ".ydui.keyboard"), $(t).off("hashchange.ydui.keyboard")
    }, o.prototype.fillPassword = function () {
        var t = this, e = t.inputNums, i = e.length, n = t.$element.find(".J_FillPwdBox").find("li");
        n.find("i").hide(), n.filter(":lt(" + i + ")").find("i").css("display", "block"), i >= 6 && t.$element.trigger($.Event("done.ydui.keyboard", {password: e}))
    }, o.prototype.clearError = function () {
        this.$element.find(".keyboard-error").html("")
    }, o.prototype.error = function (t) {
        var e = this;
        e.$element.find(".keyboard-error").html(t), e.inputNums = "", e.fillPassword()
    }, o.prototype.backspace = function () {
        var t = this, e = t.inputNums;
        e && (t.inputNums = e.substr(0, e.length - 1)), t.fillPassword()
    }, o.prototype.createNumsHtml = function () {
        var t = this, e = t.createNums();
        t.options.disorder && t.upsetOrder(e);
        var i = [];
        return $.each(e, function (t) {
            t % 3 == 0 && (t >= e.length - 2 ? i.push('<li><a href="javascript:;" class="J_Cancel">取消</a>' + e.slice(t, t + 3).join("") + '<a href="javascript:;" class="J_Backspace"></a></li>') : i.push("<li>" + e.slice(t, t + 3).join("") + "</li>"))
        }), i.join("")
    }, o.prototype.createNums = function () {
        var t = this, e = t.options.disorder;
        if (e && t.cacheNums) return t.cacheNums;
        for (var i = [], n = 1; n <= 10; n++) i.push('<a href="javascript:;" class="J_Nums">' + n % 10 + "</div>");
        return e || (t.cacheNums = i), i
    }, o.prototype.upsetOrder = function (t) {
        for (var o, a, r, e = Math.floor, i = Math.random, n = t.length, s = e(n / 2) + 1; s--;) o = e(i() * n), a = e(i() * n), o !== a && (r = t[o], t[o] = t[a], t[a] = r);
        return t
    }, $.fn.keyBoard = a
}(window), function (t) {
    "use strict";

    function i(t, e) {
        this.$element = $(t), this.options = $.extend({}, i.DEFAULTS, e || {}), this.init()
    }

    function n(t) {
        var e = Array.prototype.slice.call(arguments, 1);
        return this.each(function () {
            var n = $(this), o = n.data("ydui.cityselect");
            o || n.data("ydui.cityselect", o = new i(this, t)), "string" == typeof t && o[t] && o[t].apply(o, e)
        })
    }

    var e = $(t.document.body);
    i.DEFAULTS = {provance: "", city: "", area: ""}, i.prototype.init = function () {
        var t = this, e = t.options;
        if ("undefined" == typeof YDUI_CITYS) return void console.error("请在ydui.js前引入ydui.citys.js。下载地址：http://cityselect.ydui.org");
        t.citys = YDUI_CITYS, t.createDOM(), t.defaultSet = {provance: e.provance, city: e.city, area: e.area}
    }, i.prototype.open = function () {
        var t = this;
        e.append(t.$mask), YDUI.device.isMozilla && t.$element.blur(), t.$mask.on("click.ydui.cityselect.mask", function () {
            t.close()
        });
        var i = t.$cityElement, n = t.defaultSet;
        i.find(".cityselect-content").removeClass("cityselect-move-animate cityselect-next cityselect-prev"), t.loadProvance(), n.provance ? t.setNavTxt(0, n.provance) : i.find(".cityselect-nav a").eq(0).addClass("crt").html("请选择"), n.city && (t.loadCity(), t.setNavTxt(1, n.city)), n.area && (t.loadArea(), t.ForwardView(!1), t.setNavTxt(2, n.area)), i.addClass("brouce-in")
    }, i.prototype.close = function () {
        var t = this;
        t.$mask.remove(), t.$cityElement.removeClass("brouce-in").find(".cityselect-nav a").removeClass("crt").html(""), t.$itemBox.html("")
    }, i.prototype.createDOM = function () {
        var t = this;
        t.$mask = $('<div class="mask-black"></div>'), t.$cityElement = $('<div class="m-cityselect">    <div class="cityselect-header">        <p class="cityselect-title">所在地区</p>        <div class="cityselect-nav">            <a href="javascript:;" ></a>            <a href="javascript:;"></a>            <a href="javascript:;"></a>        </div>    </div>    <ul class="cityselect-content">        <li class="cityselect-item">            <div class="cityselect-item-box"></div>        </li>        <li class="cityselect-item">            <div class="cityselect-item-box"></div>        </li>        <li class="cityselect-item">            <div class="cityselect-item-box"></div>        </li>    </ul></div>'), e.append(t.$cityElement), t.$itemBox = t.$cityElement.find(".cityselect-item-box"), t.$cityElement.on("click.ydui.cityselect", ".cityselect-nav a", function () {
            var e = $(this);
            e.addClass("crt").siblings().removeClass("crt"), e.index() < 2 ? t.backOffView() : t.ForwardView(!0)
        })
    }, i.prototype.setNavTxt = function (t, e) {
        var i = this.$cityElement.find(".cityselect-nav a");
        t < 2 && i.removeClass("crt"), i.eq(t).html(e), i.eq(t + 1).addClass("crt").html("请选择"), i.eq(t + 2).removeClass("crt").html("")
    }, i.prototype.backOffView = function () {
        this.$cityElement.find(".cityselect-content").removeClass("cityselect-next").addClass("cityselect-move-animate cityselect-prev")
    }, i.prototype.ForwardView = function (t) {
        this.$cityElement.find(".cityselect-content").removeClass("cityselect-move-animate cityselect-prev").addClass((t ? "cityselect-move-animate" : "") + " cityselect-next")
    }, i.prototype.bindItemEvent = function () {
        var t = this, e = t.$cityElement;
        e.on("click.ydui.cityselect", ".cityselect-item-box a", function () {
            var i = $(this);
            if (!i.hasClass("crt")) {
                i.addClass("crt").siblings().removeClass("crt");
                var n = i.data("tag");
                t.setNavTxt(n, i.text());
                var o = e.find(".cityselect-nav a"), a = t.defaultSet;
                0 == n ? (t.loadCity(), e.find(".cityselect-item-box").eq(1).find("a").removeClass("crt")) : 1 == n ? (t.loadArea(), t.ForwardView(!0), e.find(".cityselect-item-box").eq(2).find("a").removeClass("crt")) : (a.provance = o.eq(0).html(), a.city = o.eq(1).html(), a.area = o.eq(2).html(), t.returnValue())
            }
        })
    }, i.prototype.returnValue = function () {
        var t = this, e = t.defaultSet;
        t.$element.trigger($.Event("done.ydui.cityselect", {
            provance: e.provance,
            city: e.city,
            area: e.area
        })), t.close()
    }, i.prototype.scrollPosition = function (t) {
        var e = this, i = e.$itemBox.eq(t), n = i.find("a.crt").height(), o = i.parent().height();
        i.parent().animate({scrollTop: i.find("a.crt").index() * n - o / 3}, 0, function () {
            e.bindItemEvent()
        })
    }, i.prototype.fillItems = function (t, e) {
        var i = this;
        i.$itemBox.eq(t).html(e).parent().animate({scrollTop: 0}, 10), i.scrollPosition(t)
    }, i.prototype.loadProvance = function () {
        var t = this, e = [];
        $.each(t.citys, function (i, n) {
            e.push($('<a class="' + (n.n == t.defaultSet.provance ? "crt" : "") + '" href="javascript:;"><span>' + n.n + "</span></a>").data({
                citys: n.c,
                tag: 0
            }))
        }), t.fillItems(0, e)
    }, i.prototype.loadCity = function () {
        var t = this, e = t.$itemBox.eq(0).find("a.crt").data("citys"), i = [];
        $.each(e, function (e, n) {
            i.push($('<a class="' + (n.n == t.defaultSet.city ? "crt" : "") + '" href="javascript:;"><span>' + n.n + "</span></a>").data({
                citys: n.a,
                tag: 1
            }))
        }), t.fillItems(1, i)
    }, i.prototype.loadArea = function () {
        var t = this, e = t.$itemBox.eq(1).find("a.crt").data("citys"), i = [];
        $.each(e, function (e, n) {
            i.push($('<a class="' + (n == t.defaultSet.area ? "crt" : "") + '" href="javascript:;"><span>' + n + "</span></a>").data({tag: 2}))
        }), i.length <= 0 && i.push($('<a href="javascript:;"><span>全区</span></a>').data({tag: 2})), t.fillItems(2, i)
    }, $.fn.citySelect = n
}(window), function (t) {
    "use strict";

    function e(t, i) {
        this.$element = $(t), this.options = $.extend({}, e.DEFAULTS, i || {}), this.init()
    }

    function i(t) {
        var i = Array.prototype.slice.call(arguments, 1);
        return this.each(function () {
            var n = $(this), o = n.data("ydui.spinner");
            o || n.data("ydui.spinner", o = new e(this, t)), "string" == typeof t && o[t] && o[t].apply(o, i)
        })
    }

    e.DEFAULTS = {
        input: ".J_Input",
        add: ".J_Add",
        minus: ".J_Del",
        unit: 1,
        max: 0,
        min: -1,
        longpress: !0,
        callback: null
    }, e.prototype.init = function () {
        var t = this, e = t.options;
        t.$input = $(e.input, t.$element), t.$add = $(e.add, t.$element), t.$minus = $(e.minus, t.$element), t.changeParameters(), t.checkParameters(), t.bindEvent()
    }, e.prototype.tapParams = {}, e.prototype.isNumber = function (t) {
        return /^\d*$/.test(t)
    }, e.prototype.FixNumber = function (t) {
        return parseInt(t)
    }, e.prototype.changeParameters = function () {
        var t = this, e = t.options, i = [{param: "unit", default: 1}, {param: "max", default: 0}];
        $.each(i, function (i, n) {
            var o = e[n.param], a = t.$input.data(n.param);
            if (a) o = a, t.isNumber(a) || "function" == typeof(o = e[n.param]) && (o = o()); else if ("function" == typeof e[n.param]) {
                var r = e[n.param]();
                o = r, t.isNumber(r) || (o = e[n.param])
            }
            t.isNumber(o) || (o = n.default), e[n.param] = t.FixNumber(o)
        })
    }, e.prototype.checkParameters = function () {
        var t = this, e = t.options, i = t.$input.val();
        i ? t.setValue(i) : (e.max < e.min && 0 != e.max && (e.max = e.min), e.min < e.unit && e.min > 0 && (e.min = e.unit), e.min % e.unit != 0 && e.min > 0 && (e.min = e.min - e.min % e.unit), e.max < e.unit && 0 != e.max && (e.max = e.unit), e.max % e.unit != 0 && (e.max = e.max - e.max % e.unit), e.min < 0 && (e.min = e.unit), t.setValue(e.min))
    }, e.prototype.calculation = function (t) {
        var e = this, i = e.options, n = i.max, o = i.unit, a = i.min, r = e.$input, s = e.FixNumber(r.val());
        if (!r.attr("readonly") && !r.attr("disabled")) {
            var c;
            if ("add" == t) {
                if (c = s + o, 0 != n && c > n) return
            } else if ((c = s - o) < a) return;
            e.setValue(c), i.longpress && e.longpressHandler(t)
        }
    }, e.prototype.longpressHandler = function (t) {
        var e = this, i = (new Date).getTime() / 1e3, n = i - e.tapStartTime;
        n < 1 && (n = .5);
        var o = 10 * n;
        30 == n && (o = 50), n >= 40 && (o = 100), e.tapParams.timer = setTimeout(function () {
            e.calculation(t)
        }, 1e3 / o)
    }, e.prototype.setValue = function (t) {
        var e = this, i = e.options, n = i.max, o = i.unit, a = i.min < 0 ? o : i.min;
        /^(([1-9]\d*)|0)$/.test(t) || (t = n), t > n && 0 != n && (t = n), t % o > 0 && (t = t - t % o + o) > n && 0 != n && (t -= o), t < a && (t = a - a % o), e.$input.val(t), "function" == typeof i.callback && i.callback(t, e.$input)
    }, e.prototype.bindEvent = function () {
        var t = this, e = t.options, i = YDUI.device.isMobile, n = "mousedown.ydui.spinner", o = "mouseup.ydui.spinner";
        i && (n = "touchstart.ydui.spinner", o = "touchend.ydui.spinner"), t.$add.on(n, function (i) {
            e.longpress && (i.preventDefault(), i.stopPropagation(), t.tapStartTime = (new Date).getTime() / 1e3, t.$add.on(o, function () {
                t.clearTapTimer()
            })), t.calculation("add")
        }), t.$minus.on(n, function (i) {
            e.longpress && (i.preventDefault(), i.stopPropagation(), t.tapStartTime = (new Date).getTime() / 1e3, t.$minus.on(o, function () {
                t.clearTapTimer()
            })), t.calculation("minus")
        }), t.$input.on("change.ydui.spinner", function () {
            t.setValue($(this).val())
        }).on("keydown", function (e) {
            if (13 == e.keyCode) return t.setValue($(this).val()), !1
        })
    }, e.prototype.clearTapTimer = function () {
        var t = this;
        clearTimeout(t.tapParams.timer)
    }, $(t).on("load.ydui.spinner", function () {
        $("[data-ydui-spinner]").each(function () {
            var e = $(this);
            e.spinner(t.YDUI.util.parseOptions(e.data("ydui-spinner")))
        })
    }), $.fn.spinner = i
}(window), function (t) {
    "use strict";

    function e(t, i) {
        this.$element = $(t), this.options = $.extend({}, e.DEFAULTS, i || {}), this.init()
    }

    function i(t) {
        return this.each(function () {
            var i = $(this);
            i.data("ydui.slider") || i.data("ydui.slider", new e(this, t))
        })
    }

    e.DEFAULTS = {
        speed: 300,
        autoplay: 3e3,
        lazyLoad: !1,
        pagination: ".slider-pagination",
        wrapperClass: "slider-wrapper",
        slideClass: "slider-item",
        bulletClass: "slider-pagination-item",
        bulletActiveClass: "slider-pagination-item-active"
    }, e.prototype.init = function () {
        var t = this, e = t.options, i = t.$element;
        t.index = 1, t.autoPlayTimer = null, t.$pagination = i.find(e.pagination), t.$wrapper = i.find("." + e.wrapperClass), t.itemNums = t.$wrapper.find("." + e.slideClass).length, e.lazyLoad && t.loadImage(0), t.createBullet(), t.cloneItem().bindEvent()
    }, e.prototype.bindEvent = function () {
        var e = this, i = e.touchEvents();
        e.$wrapper.find("." + e.options.slideClass).on(i.start, function (t) {
            e.onTouchStart(t)
        }).on(i.move, function (t) {
            e.onTouchMove(t)
        }).on(i.end, function (t) {
            e.onTouchEnd(t)
        }), $(t).on("resize.ydui.slider", function () {
            e.setSlidesSize()
        }), ~~e.options.autoplay > 0 && e.autoPlay(), e.$wrapper.on("click.ydui.slider", function (t) {
            e.touches.allowClick || t.preventDefault()
        })
    }, e.prototype.cloneItem = function () {
        var t = this, e = t.$wrapper, i = t.$wrapper.find("." + t.options.slideClass),
            n = i.filter(":first-child").clone(), o = i.filter(":last-child").clone();
        return e.prepend(o), e.append(n), t.setSlidesSize(), t
    }, e.prototype.createBullet = function () {
        var t = this;
        if (t.$pagination[0]) {
            var e = '<span class="' + t.options.bulletClass + " " + t.options.bulletActiveClass + '"></span>';
            t.$pagination.append(e + new Array(t.itemNums).join('<span class="' + t.options.bulletClass + '"></span>'))
        }
    }, e.prototype.activeBullet = function () {
        var t = this;
        if (t.$pagination[0]) {
            var e = t.itemNums, i = t.index % e >= e ? 0 : t.index % e - 1, n = t.options.bulletActiveClass;
            !!t.$pagination[0] && t.$pagination.find("." + t.options.bulletClass).removeClass(n).eq(i).addClass(n)
        }
    }, e.prototype.setSlidesSize = function () {
        var t = this, e = t.$wrapper.width();
        t.$wrapper.css("transform", "translate3d(-" + e + "px,0,0)"), t.$wrapper.find("." + t.options.slideClass).css({width: e})
    }, e.prototype.autoPlay = function () {
        var t = this;
        t.autoPlayTimer = setInterval(function () {
            t.index > t.itemNums && (t.index = 1, t.setTranslate(0, -t.$wrapper.width())), t.setTranslate(t.options.speed, -++t.index * t.$wrapper.width())
        }, t.options.autoplay)
    }, e.prototype.stopAutoplay = function () {
        var t = this;
        return clearInterval(t.autoPlayTimer), t
    }, e.prototype.loadImage = function (t) {
        var e = this, i = e.$wrapper.find("." + e.options.slideClass).eq(t).find("img"), n = i.data("src");
        1 != i.data("load") && !!n && i.attr("src", n).data("load", 1)
    }, e.prototype.setTranslate = function (t, e) {
        var i = this;
        i.options.lazyLoad && i.loadImage(i.index), i.activeBullet(), i.$wrapper.css({
            transitionDuration: t + "ms",
            transform: "translate3d(" + e + "px,0,0)"
        })
    }, e.prototype.touches = {
        moveTag: 0,
        startClientX: 0,
        moveOffset: 0,
        touchStartTime: 0,
        isTouchEvent: !1,
        allowClick: !1
    }, e.prototype.onTouchStart = function (t) {
        t.originalEvent.touches && (t = t.originalEvent.touches[0]);
        var e = this, i = e.touches;
        if (i.allowClick = !0, i.isTouchEvent = "touchstart" === t.type, (i.isTouchEvent || !("which" in t) || 3 !== t.which) && 0 == i.moveTag) {
            i.moveTag = 1, i.startClientX = t.clientX, i.touchStartTime = Date.now();
            var n = e.itemNums;
            if (0 == e.index) return e.index = n, void e.setTranslate(0, -n * e.$wrapper.width());
            e.index > n && (e.index = 1, e.setTranslate(0, -e.$wrapper.width()))
        }
    }, e.prototype.onTouchMove = function (t) {
        t.preventDefault(), t.originalEvent.touches && (t = t.originalEvent.touches[0]);
        var e = this, i = e.touches;
        if (i.allowClick = !1, !i.isTouchEvent || "mousemove" !== t.type) {
            var n = i.moveOffset = t.clientX - i.startClientX;
            0 != n && 0 != i.moveTag && (1 == i.moveTag && (e.stopAutoplay(), i.moveTag = 2), 2 == i.moveTag && e.setTranslate(0, -e.index * e.$wrapper.width() + n))
        }
    }, e.prototype.onTouchEnd = function () {
        var t = this, e = t.options.speed, i = t.$wrapper.width(), n = t.touches, o = n.moveOffset;
        if (setTimeout(function () {
                n.allowClick = !0
            }, 0), 1 == n.moveTag && (n.moveTag = 0), 2 == n.moveTag) {
            n.moveTag = 0;
            Date.now() - n.touchStartTime > 300 && Math.abs(o) <= .5 * t.$wrapper.width() ? t.setTranslate(e, -t.index * t.$wrapper.width()) : t.setTranslate(e, -(o > 0 ? --t.index : ++t.index) * i), t.autoPlay()
        }
    }, e.prototype.touchEvents = function () {
        var e = t.Modernizr && !!t.Modernizr.touch || function () {
            return !!("ontouchstart" in t || t.DocumentTouch && document instanceof DocumentTouch)
        }();
        return {
            start: e ? "touchstart.ydui.slider" : "mousedown.ydui.slider",
            move: e ? "touchmove.ydui.slider" : "mousemove.ydui.slider",
            end: e ? "touchend.ydui.slider" : "mouseup.ydui.slider"
        }
    }, $(t).on("load.ydui.slider", function () {
        $("[data-ydui-slider]").each(function () {
            var e = $(this);
            e.slider(t.YDUI.util.parseOptions(e.data("ydui-slider")))
        })
    }), $.fn.slider = i
}(window), function (t, e) {
    "use strict";
    var i = e.dialog = e.dialog || {}, n = $(t.document.body);
    i.confirm = function (t, i, o) {
        var a = "YDUI_CONFRIM";
        $("#" + a).remove();
        var r = arguments.length;
        if (r < 2) return void console.error("From YDUI's confirm: Please set two or three parameters!!!");
        if ("function" != typeof arguments[1] && 2 == r && !arguments[1] instanceof Array) return void console.error("From YDUI's confirm: The second parameter must be a function or array!!!");
        2 == r && (o = i, i = t, t = "提示");
        var s = o;
        "function" == typeof o && (s = [{txt: "取消", color: !1}, {
            txt: "确定", color: !0, callback: function () {
                o && o()
            }
        }]);
        var c = $('<div class="mask-black-dialog" id="' + a + '">   <div class="m-confirm">       <div class="confirm-hd"><strong class="confirm-title">' + t + '</strong></div>       <div class="confirm-bd">' + i + "</div>   </div></div>"),
            l = $('<div class="confirm-ft"></div>');
        $.each(s, function (t, i) {
            var n;
            "boolean" == typeof i.color ? n = $('<a href="javascript:;" class="confirm-btn ' + (i.color ? "primary" : "default") + '">' + (i.txt || "") + "</a>") : "string" == typeof i.color && (n = $('<a href="javascript:;" style="color: ' + i.color + '">' + (i.txt || "") + "</a>")), function (t) {
                n.on("click", function (i) {
                    i.stopPropagation(), s[t].stay || (e.util.pageScroll.unlock(), c.remove()), s[t].callback && s[t].callback()
                })
            }(t), l.append(n)
        }), c.find(".m-confirm").append(l), e.util.pageScroll.lock(), n.append(c)
    }, i.alert = function (t, i) {
        var o = "YDUI_ALERT";
        $("#" + o).remove();
        var a = $('<div id="' + o + '">   <div class="mask-black-dialog">       <div class="m-confirm m-alert">           <div class="confirm-bd">' + (t || "YDUI Touch") + '</div>           <div class="confirm-ft">               <a href="javascript:;" class="confirm-btn primary">确定</a>           </div>       </div>   </div></div>');
        e.util.pageScroll.lock(), n.append(a), a.find("a").on("click", function () {
            a.remove(), e.util.pageScroll.unlock(), "function" == typeof i && i()
        })
    }, i.toast = function () {
        var t = null;
        return function (i, o, a, r) {
            clearTimeout(t);
            var s = "YDUI_TOAST";
            if ($("#" + s).remove(), arguments.length < 2) return void console.error("From YDUI's toast: Please set two or more parameters!!!");
            var l = "";
            "success" != o && "error" != o || (l = '<div class="' + ("error" == o ? "toast-error-ico" : "toast-success-ico") + '"></div>');
            var u = $('<div class="mask-white-dialog" id="' + s + '">    <div class="m-toast ' + ("" == l ? "none-icon" : "") + '">' + l + '        <p class="toast-content">' + (i || "") + "</p>    </div></div>");
            e.util.pageScroll.lock(), n.append(u), "function" == typeof a && arguments.length >= 3 && (r = a, a = 2e3), t = setTimeout(function () {
                clearTimeout(t), e.util.pageScroll.unlock(), u.remove(), "function" == typeof r && r()
            }, (~~a || 2e3) + 100)
        }
    }(), i.notify = function () {
        var t = null;
        return function (e, i, o) {
            clearTimeout(t);
            var a = "YDUI_NOTIFY";
            $("#" + a).remove();
            var r = $('<div id="' + a + '"><div class="m-notify">' + (e || "") + "</div></div>");
            n.append(r);
            var s = function () {
                r.remove(), "function" == typeof o && o()
            }, c = function () {
                clearTimeout(t), r.find(".m-notify").addClass("notify-out"), r.one("webkitTransitionEnd", s).emulateTransitionEnd(150)
            };
            r.on("click", c), ~~i > 0 && (t = setTimeout(c, i + 200))
        }
    }(), i.loading = function () {
        var t = "YDUI_LOADING";
        return {
            open: function (i) {
                $("#" + t).remove();
                var o = $('<div class="mask-white-dialog" id="' + t + '">   <div class="m-loading">       <div class="loading-icon"></div>       <div class="loading-txt">' + (i || "数据加载中") + "</div>   </div></div>").remove();
                e.util.pageScroll.lock(), n.append(o)
            }, close: function () {
                e.util.pageScroll.unlock(), $("#" + t).remove()
            }
        }
    }()
}(window, YDUI), function (t) {
    "use strict";

    function n(t, e) {
        this.pathTemplate = "M 50,50 m 0,-{radius} a {radius},{radius} 0 1 1 0,{2radius} a {radius},{radius} 0 1 1 0,-{2radius}", a.apply(this, arguments)
    }

    function o(t, e) {
        this.pathTemplate = "M 0,{center} L 100,{center}", a.apply(this, arguments)
    }

    function a(t, e) {
        this.$element = $(t), this.options = $.extend({}, a.DEFAULTS, e || {})
    }

    function r(t) {
        var e = Array.prototype.slice.call(arguments, 1);
        return this.each(function () {
            var i = $(this), a = i.data("ydui.progressbar");
            a || ("line" == t.type ? i.data("ydui.progressbar", a = new o(this, t)) : i.data("ydui.progressbar", a = new n(this, t)), t && "object" != typeof t || a.appendView()), "string" == typeof t && a[t] && a[t].apply(a, e)
        })
    }

    var e = t.document, i = t.YDUI.util;
    n.prototype = new a, n.prototype.getPathString = function (t) {
        var e = this, i = 50 - t / 2;
        return e.render(e.pathTemplate, {radius: i, "2radius": 2 * i})
    }, n.prototype.initSvg = function (t) {
        t.setAttribute("viewBox", "0 0 100 100"), t.style.display = "block", t.style.width = "100%"
    }, o.prototype = new a, o.prototype.getPathString = function (t) {
        var e = this;
        return e.render(e.pathTemplate, {center: t / 2})
    }, o.prototype.initSvg = function (t, e) {
        t.setAttribute("viewBox", "0 0 100 " + e.strokeWidth), t.setAttribute("preserveAspectRatio", "none"), t.style.width = "100%", t.style.height = "100%"
    }, a.DEFAULTS = {
        type: "circle",
        strokeWidth: 0,
        strokeColor: "#E5E5E5",
        trailWidth: 0,
        trailColor: "#646464",
        fill: "",
        progress: 0,
        delay: !0,
        binder: t
    }, a.prototype.set = function (t) {
        var e = this, i = e.trailPath.getTotalLength();
        t || (t = e.options.progress), t > 1 && (t = 1), e.trailPath.style.strokeDashoffset = i - t * i
    }, a.prototype.appendView = function () {
        var e = this, i = e.options, n = i.progress, o = e.createSvgView(), a = e.$element;
        e.$binder = i.binder === t || "window" == i.binder ? $(t) : $(i.binder);
        var r = o.trailPath, s = r.getTotalLength();
        r.style.strokeDasharray = s + " " + s;
        var c = $(o.svg);
        return c.one("appear.ydui.progressbar", function () {
            e.set(n)
        }), a.append(c), i.delay ? (e.checkInView(c), e.$binder.on("scroll.ydui.progressbar", function () {
            e.checkInView(c)
        }), $(t).on("resize", function () {
            e.checkInView(c)
        })) : c.trigger("appear.ydui.progressbar"), this
    }, a.prototype.checkInView = function (e) {
        var i = this, n = i.$binder, o = n.height(), a = n.get(0) === t ? $(t).scrollTop() : n.offset().top,
            r = e.offset().top - a, s = r + e.height();
        (r >= 0 && r < o || s > 0 && s <= o) && e.trigger("appear.ydui.progressbar")
    }, a.prototype.createSvgView = function () {
        var t = this, i = t.options, n = e.createElementNS("http://www.w3.org/2000/svg", "svg");
        t.initSvg(n, i);
        var o = t.createPath(i);
        n.appendChild(o);
        var a = null;
        return (i.trailColor || i.trailWidth) && (a = t.createTrailPath(i), a.style.strokeDashoffset = a.getTotalLength(), n.appendChild(a)), t.svg = n, t.trailPath = a, {
            svg: n,
            trailPath: a
        }
    }, a.prototype.createTrailPath = function (t) {
        var e = this;
        0 == t.trailWidth && (t.trailWidth = t.strokeWidth);
        var i = e.getPathString(t.trailWidth);
        return e.createPathElement(i, t.trailColor, t.trailWidth)
    }, a.prototype.createPath = function (t) {
        var e = this, i = t.strokeWidth;
        t.trailWidth && t.trailWidth > t.strokeWidth && (i = t.trailWidth);
        var n = e.getPathString(i);
        return e.createPathElement(n, t.strokeColor, t.strokeWidth, t.fill)
    }, a.prototype.createPathElement = function (t, i, n, o) {
        var a = e.createElementNS("http://www.w3.org/2000/svg", "path");
        return a.setAttribute("d", t), a.setAttribute("stroke", i), a.setAttribute("stroke-width", n), o ? a.setAttribute("fill", o) : a.setAttribute("fill-opacity", "0"), a
    }, a.prototype.render = function (t, e) {
        var i = t;
        for (var n in e) if (e.hasOwnProperty(n)) {
            var o = e[n], a = "\\{" + n + "\\}", r = new RegExp(a, "g");
            i = i.replace(r, o)
        }
        return i
    }, $("[data-ydui-progressbar]").each(function () {
        var t = $(this);
        r.call(t, i.parseOptions(t.data("ydui-progressbar")))
    }), $.fn.progressBar = r
}(window), function (t) {
    "use strict";

    function a(t, e) {
        this.$element = $(t), this.closeElement = e, this.toggleClass = "actionsheet-toggle"
    }

    function r(t) {
        var e = Array.prototype.slice.call(arguments, 1);
        return this.each(function () {
            var i = $(this), n = i.data("ydui.actionsheet");
            n || (i.data("ydui.actionsheet", n = new a(this, t.closeElement)), t && "object" != typeof t || n.open()), "string" == typeof t && n[t] && n[t].apply(n, e)
        })
    }

    var e = t.document, i = $(e), n = $(e.body), o = $('<div class="mask-black"></div>');
    a.prototype.open = function () {
        YDUI.device.isIOS && $(".g-scrollview").addClass("g-fix-ios-overflow-scrolling-bug");
        var t = this;
        n.append(o), o.on("click.ydui.actionsheet.mask", function () {
            t.close()
        }), t.closeElement && i.on("click.ydui.actionsheet", t.closeElement, function () {
            t.close()
        }), t.$element.addClass(t.toggleClass).trigger("open.ydui.actionsheet")
    }, a.prototype.close = function () {
        var t = this;
        YDUI.device.isIOS && $(".g-scrollview").removeClass("g-fix-ios-overflow-scrolling-bug"), o.off("click.ydui.actionsheet.mask").remove(), t.$element.removeClass(t.toggleClass).trigger("close.ydui.actionsheet")
    }, i.on("click.ydui.actionsheet.data-api", "[data-ydui-actionsheet]", function (e) {
        e.preventDefault();
        var i = t.YDUI.util.parseOptions($(this).data("ydui-actionsheet")), n = $(i.target),
            o = n.data("ydui.actionsheet") ? "open" : i;
        r.call(n, o)
    }), $.fn.actionSheet = r
}(window), function (window) {
    "use strict";
    var util = window.YDUI.util = window.YDUI.util || {}, doc = window.document;
    util.timestampTotime = function (t, e) {
        var i = {}, n = Math.floor;
        i.f = e % 1e3, e = n(e / 1e3), i.s = e % 60, e = n(e / 60), i.m = e % 60, e = n(e / 60), i.h = e % 24, i.d = n(e / 24);
        var o = function (t) {
            return t <= 0 ? "" : "$1" + (t < 10 ? "0" + t : t) + "$2"
        };
        return t = t.replace(/\{([^{]*?)%d(.*?)\}/g, o(i.d)), t = t.replace(/\{([^{]*?)%h(.*?)\}/g, o(i.h)), t = t.replace(/\{([^{]*?)%m(.*?)\}/g, o(i.m)), t = t.replace(/\{([^{]*?)%s(.*?)\}/g, o(i.s)), t = t.replace(/\{([^{]*?)%f(.*?)\}/g, o(i.f))
    }, util.countdown = function (t, e, i, n) {
        var o = this, a = setInterval(function () {
            var i = e - (new Date).getTime();
            i > 0 ? n(o.timestampTotime(t, i)) : (clearInterval(a), "function" == typeof n && n(""))
        }, i)
    }, util.calc = function (arg1, op, arg2) {
        var ra = 1, rb = 1, m;
        try {
            ra = arg1.toString().split(".")[1].length
        } catch (t) {
        }
        try {
            rb = arg2.toString().split(".")[1].length
        } catch (t) {
        }
        switch (m = Math.pow(10, Math.max(ra, rb)), op) {
            case"+":
            case"-":
                arg1 = Math.round(arg1 * m), arg2 = Math.round(arg2 * m);
                break;
            case"*":
                ra = Math.pow(10, ra), rb = Math.pow(10, rb), m = ra * rb, arg1 = Math.round(arg1 * ra), arg2 = Math.round(arg2 * rb);
                break;
            case"/":
                arg1 = Math.round(arg1 * m), arg2 = Math.round(arg2 * m), m = 1
        }
        try {
            var result = eval("((" + arg1 + ")" + op + "(" + arg2 + "))/" + m)
        } catch (t) {
        }
        return result
    }, util.getImgBase64 = function (t, e) {
        var i = this, n = "", o = t.files[0];
        if (o) {
            if (!/image\/\w+/.test(o.type)) return void i.tipMes("请上传图片文件", "error");
            var a = new FileReader;
            a.readAsDataURL(o), a.onload = function () {
                n = this.result, "function" == typeof e && e(n)
            }
        }
    }, util.getQueryString = function (t) {
        var e = new RegExp("(^|&)" + t + "=([^&]*)(&|$)"), i = window.location.search.substr(1).match(e), n = "";
        return null != i && (n = decodeURIComponent(i[2])), n
    }, util.cookie = function () {
        return {
            get: function (t) {
                var e = doc.cookie.match("(?:^|;)\\s*" + t + "=([^;]*)");
                return e && e[1] ? decodeURIComponent(e[1]) : ""
            }, set: function (t, e, i, n, o, a) {
                var r = String(encodeURIComponent(e)), s = i;
                "number" == typeof s && (s = new Date, s.setTime(s.getTime() + 1e3 * i)), s instanceof Date && (r += "; expires=" + s.toUTCString()), !!n && (r += "; domain=" + n), r += "; path=" + (o || "/"), a && (r += "; secure"), doc.cookie = t + "=" + r
            }
        }
    }()
}(window), function (t) {
    "use strict";

    function e(t, i) {
        this.$element = $(t), this.options = $.extend({}, e.DEFAULTS, i || {}), this.init(), this.bindEvent(), this.transitioning = !1
    }

    function i(t) {
        var i = Array.prototype.slice.call(arguments, 1);
        return this.each(function () {
            var n = this, o = $(n), a = o.data("ydui.tab");
            a || o.data("ydui.tab", a = new e(n, t)), "string" == typeof t && a[t] && a[t].apply(a, i)
        })
    }

    e.TRANSITION_DURATION = 150, e.DEFAULTS = {
        nav: ".tab-nav-item",
        panel: ".tab-panel-item",
        activeClass: "tab-active"
    }, e.prototype.init = function () {
        var t = this, e = t.$element;
        t.$nav = e.find(t.options.nav), t.$panel = e.find(t.options.panel)
    }, e.prototype.bindEvent = function () {
        var t = this;
        t.$nav.each(function (e) {
            $(this).on("click.ydui.tab", function () {
                t.open(e)
            })
        })
    }, e.prototype.open = function (t) {
        var e = this;
        t = "number" == typeof t ? t : e.$nav.filter(t).index();
        var i = e.$nav.eq(t);
        e.transitioning || i.hasClass(e.options.activeClass) || (e.transitioning = !0, i.trigger($.Event("open.ydui.tab", {index: t})), e.active(i, e.$nav), e.active(e.$panel.eq(t), e.$panel, function () {
            i.trigger({type: "opened.ydui.tab", index: t}), e.transitioning = !1
        }))
    }, e.prototype.active = function (t, i, n) {
        function s() {
            "function" == typeof n && n()
        }

        var o = this, a = o.options.activeClass, r = i.filter("." + a);
        t.one("webkitTransitionEnd", s).emulateTransitionEnd(e.TRANSITION_DURATION), r.removeClass(a), t.addClass(a)
    }, $(t).on("load.ydui.tab", function () {
        $("[data-ydui-tab]").each(function () {
            var e = $(this);
            e.tab(t.YDUI.util.parseOptions(e.data("ydui-tab")))
        })
    }), $.fn.tab = i
}(window), function () {
    "use strict";

    function t(e, n) {
        function a(t, e) {
            return function () {
                return t.apply(e, arguments)
            }
        }

        var o;
        if (n = n || {}, this.trackingClick = !1, this.trackingClickStart = 0, this.targetElement = null, this.touchStartX = 0, this.touchStartY = 0, this.lastTouchIdentifier = 0, this.touchBoundary = n.touchBoundary || 10, this.layer = e, this.tapDelay = n.tapDelay || 200, this.tapTimeout = n.tapTimeout || 700, !t.notNeeded(e)) {
            for (var r = ["onMouse", "onClick", "onTouchStart", "onTouchMove", "onTouchEnd", "onTouchCancel"], s = this, c = 0, l = r.length; c < l; c++) s[r[c]] = a(s[r[c]], s);
            i && (e.addEventListener("mouseover", this.onMouse, !0), e.addEventListener("mousedown", this.onMouse, !0), e.addEventListener("mouseup", this.onMouse, !0)), e.addEventListener("click", this.onClick, !0), e.addEventListener("touchstart", this.onTouchStart, !1), e.addEventListener("touchmove", this.onTouchMove, !1), e.addEventListener("touchend", this.onTouchEnd, !1), e.addEventListener("touchcancel", this.onTouchCancel, !1), Event.prototype.stopImmediatePropagation || (e.removeEventListener = function (t, i, n) {
                var o = Node.prototype.removeEventListener;
                "click" === t ? o.call(e, t, i.hijacked || i, n) : o.call(e, t, i, n)
            }, e.addEventListener = function (t, i, n) {
                var o = Node.prototype.addEventListener;
                "click" === t ? o.call(e, t, i.hijacked || (i.hijacked = function (t) {
                    t.propagationStopped || i(t)
                }), n) : o.call(e, t, i, n)
            }), "function" == typeof e.onclick && (o = e.onclick, e.addEventListener("click", function (t) {
                o(t)
            }, !1), e.onclick = null)
        }
    }

    var e = navigator.userAgent.indexOf("Windows Phone") >= 0, i = navigator.userAgent.indexOf("Android") > 0 && !e,
        n = /iP(ad|hone|od)/.test(navigator.userAgent) && !e, o = n && /OS 4_\d(_\d)?/.test(navigator.userAgent),
        a = n && /OS [6-7]_\d/.test(navigator.userAgent), r = navigator.userAgent.indexOf("BB10") > 0;
    t.prototype.needsClick = function (t) {
        switch (t.nodeName.toLowerCase()) {
            case"button":
            case"select":
            case"textarea":
                if (t.disabled) return !0;
                break;
            case"input":
                if (n && "file" === t.type || t.disabled) return !0;
                break;
            case"label":
            case"iframe":
            case"video":
                return !0
        }
        return /\bneedsclick\b/.test(t.className)
    }, t.prototype.needsFocus = function (t) {
        switch (t.nodeName.toLowerCase()) {
            case"textarea":
                return !0;
            case"select":
                return !i;
            case"input":
                switch (t.type) {
                    case"button":
                    case"checkbox":
                    case"file":
                    case"image":
                    case"radio":
                    case"submit":
                        return !1
                }
                return !t.disabled && !t.readOnly;
            default:
                return /\bneedsfocus\b/.test(t.className)
        }
    }, t.prototype.sendClick = function (t, e) {
        var i, n;
        document.activeElement && document.activeElement !== t && document.activeElement.blur(), n = e.changedTouches[0], i = document.createEvent("MouseEvents"), i.initMouseEvent(this.determineEventType(t), !0, !0, window, 1, n.screenX, n.screenY, n.clientX, n.clientY, !1, !1, !1, !1, 0, null), i.forwardedTouchEvent = !0, t.dispatchEvent(i)
    }, t.prototype.determineEventType = function (t) {
        return i && "select" === t.tagName.toLowerCase() ? "mousedown" : "click"
    }, t.prototype.focus = function (t) {
        var e;
        n && t.setSelectionRange && 0 !== t.type.indexOf("date") && "time" !== t.type && "month" !== t.type ? (e = t.value.length, t.setSelectionRange(e, e)) : t.focus()
    }, t.prototype.updateScrollParent = function (t) {
        var e, i;
        if (!(e = t.fastClickScrollParent) || !e.contains(t)) {
            i = t;
            do {
                if (i.scrollHeight > i.offsetHeight) {
                    e = i, t.fastClickScrollParent = i;
                    break
                }
                i = i.parentElement
            } while (i)
        }
        e && (e.fastClickLastScrollTop = e.scrollTop)
    }, t.prototype.getTargetElementFromEventTarget = function (t) {
        return t.nodeType === Node.TEXT_NODE ? t.parentNode : t
    }, t.prototype.onTouchStart = function (t) {
        var e, i, a;
        if (t.targetTouches.length > 1) return !0;
        if (e = this.getTargetElementFromEventTarget(t.target), i = t.targetTouches[0], n) {
            if (a = window.getSelection(), a.rangeCount && !a.isCollapsed) return !0;
            if (!o) {
                if (i.identifier && i.identifier === this.lastTouchIdentifier) return t.preventDefault(), !1;
                this.lastTouchIdentifier = i.identifier, this.updateScrollParent(e)
            }
        }
        return this.trackingClick = !0, this.trackingClickStart = t.timeStamp, this.targetElement = e, this.touchStartX = i.pageX, this.touchStartY = i.pageY, t.timeStamp - this.lastClickTime < this.tapDelay && t.preventDefault(), !0
    }, t.prototype.touchHasMoved = function (t) {
        var e = t.changedTouches[0], i = this.touchBoundary;
        return Math.abs(e.pageX - this.touchStartX) > i || Math.abs(e.pageY - this.touchStartY) > i
    }, t.prototype.onTouchMove = function (t) {
        return !this.trackingClick || ((this.targetElement !== this.getTargetElementFromEventTarget(t.target) || this.touchHasMoved(t)) && (this.trackingClick = !1, this.targetElement = null), !0)
    }, t.prototype.findControl = function (t) {
        return void 0 !== t.control ? t.control : t.htmlFor ? document.getElementById(t.htmlFor) : t.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")
    }, t.prototype.onTouchEnd = function (t) {
        var e, r, s, c, l, u = this.targetElement;
        if (!this.trackingClick) return !0;
        if (t.timeStamp - this.lastClickTime < this.tapDelay) return this.cancelNextClick = !0, !0;
        if (t.timeStamp - this.trackingClickStart > this.tapTimeout) return !0;
        if (this.cancelNextClick = !1, this.lastClickTime = t.timeStamp, r = this.trackingClickStart, this.trackingClick = !1, this.trackingClickStart = 0, a && (l = t.changedTouches[0], u = document.elementFromPoint(l.pageX - window.pageXOffset, l.pageY - window.pageYOffset) || u, u.fastClickScrollParent = this.targetElement.fastClickScrollParent), "label" === (s = u.tagName.toLowerCase())) {
            if (e = this.findControl(u)) {
                if (this.focus(u), i) return !1;
                u = e
            }
        } else if (this.needsFocus(u)) return t.timeStamp - r > 100 || n && window.top !== window && "input" === s ? (this.targetElement = null, !1) : (this.focus(u), this.sendClick(u, t), n && "select" === s || (this.targetElement = null, t.preventDefault()), !1);
        return !(!n || o || !(c = u.fastClickScrollParent) || c.fastClickLastScrollTop === c.scrollTop) || (this.needsClick(u) || (t.preventDefault(), this.sendClick(u, t)), !1)
    }, t.prototype.onTouchCancel = function () {
        this.trackingClick = !1, this.targetElement = null
    }, t.prototype.onMouse = function (t) {
        return !this.targetElement || (!!t.forwardedTouchEvent || (!t.cancelable || (!(!this.needsClick(this.targetElement) || this.cancelNextClick) || (t.stopImmediatePropagation ? t.stopImmediatePropagation() : t.propagationStopped = !0, t.stopPropagation(), t.preventDefault(), !1))))
    }, t.prototype.onClick = function (t) {
        var e;
        return this.trackingClick ? (this.targetElement = null, this.trackingClick = !1, !0) : "submit" === t.target.type && 0 === t.detail || (e = this.onMouse(t), e || (this.targetElement = null), e)
    }, t.prototype.destroy = function () {
        var t = this.layer;
        i && (t.removeEventListener("mouseover", this.onMouse, !0), t.removeEventListener("mousedown", this.onMouse, !0), t.removeEventListener("mouseup", this.onMouse, !0)), t.removeEventListener("click", this.onClick, !0), t.removeEventListener("touchstart", this.onTouchStart, !1), t.removeEventListener("touchmove", this.onTouchMove, !1), t.removeEventListener("touchend", this.onTouchEnd, !1), t.removeEventListener("touchcancel", this.onTouchCancel, !1)
    }, t.notNeeded = function (t) {
        var e, n, o;
        if (void 0 === window.ontouchstart) return !0;
        if (n = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1]) {
            if (!i) return !0;
            if (e = document.querySelector("meta[name=viewport]")) {
                if (-1 !== e.content.indexOf("user-scalable=no")) return !0;
                if (n > 31 && document.documentElement.scrollWidth <= window.outerWidth) return !0
            }
        }
        if (r && (o = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/), o[1] >= 10 && o[2] >= 3 && (e = document.querySelector("meta[name=viewport]")))) {
            if (-1 !== e.content.indexOf("user-scalable=no")) return !0;
            if (document.documentElement.scrollWidth <= window.outerWidth) return !0
        }
        return "none" === t.style.msTouchAction || "manipulation" === t.style.touchAction || (!!(+(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1] >= 27 && (e = document.querySelector("meta[name=viewport]")) && (-1 !== e.content.indexOf("user-scalable=no") || document.documentElement.scrollWidth <= window.outerWidth)) || ("none" === t.style.touchAction || "manipulation" === t.style.touchAction))
    }, t.attach = function (e, i) {
        return new t(e, i)
    }, "function" == typeof define && "object" == typeof define.amd && define.amd ? define(function () {
        return t
    }) : "undefined" != typeof module && module.exports ? (module.exports = t.attach, module.exports.FastClick = t) : window.FastClick = t
}(), function (t) {
    "use strict";

    function e(t, i) {
        this.$element = $(t), this.options = $.extend({}, e.DEFAULTS, i || {}), this.init()
    }

    function i(t) {
        var i = Array.prototype.slice.call(arguments, 1);
        return this.each(function () {
            var n = this, o = $(n), a = o.data("ydui.scrolltab");
            a || o.data("ydui.scrolltab", a = new e(n, t)), "string" == typeof t && a[t] && a[t].apply(a, i)
        })
    }

    e.DEFAULTS = {
        navItem: ".scrolltab-item",
        content: ".scrolltab-content",
        contentItem: ".scrolltab-content-item",
        initIndex: 0
    }, e.prototype.init = function () {
        var t = this, e = t.$element, i = t.options;
        t.$navItem = e.find(i.navItem), t.$content = e.find(i.content), t.$contentItem = e.find(i.contentItem), t.scrolling = !1, t.contentOffsetTop = t.$content.offset().top, t.bindEvent(), t.movePosition(t.options.initIndex, !1)
    }, e.prototype.bindEvent = function () {
        var t = this;
        t.$content.on("resize.ydui.scrolltab scroll.ydui.scrolltab", function () {
            t.checkInView()
        }), t.$navItem.on("click.ydui.scrolltab", function () {
            t.movePosition($(this).index(), !0)
        })
    }, e.prototype.movePosition = function (t, e) {
        var i = this;
        if (!i.scrolling) {
            i.scrolling = !0, i.$navItem.removeClass("crt"), i.$navItem.eq(t).addClass("crt");
            var n = i.$contentItem.eq(t);
            if (n[0]) {
                var o = n.offset().top, a = o + i.$content.scrollTop() - i.contentOffsetTop + 1;
                i.$content.stop().animate({scrollTop: a}, e ? 200 : 0, function () {
                    i.scrolling = !1
                })
            }
        }
    }, e.prototype.checkInView = function () {
        var t = this;
        if (!t.scrolling) return t.isScrollTop() ? void t.setClass(0) : t.isScrollBottom() ? void t.setClass(t.$navItem.length - 1) : void t.$contentItem.each(function () {
            var e = $(this);
            e.offset().top <= t.contentOffsetTop && t.setClass(e.index())
        })
    }, e.prototype.setClass = function (t) {
        this.$navItem.removeClass("crt").eq(t).addClass("crt")
    }, e.prototype.isScrollTop = function () {
        return 0 == this.$content.scrollTop()
    }, e.prototype.isScrollBottom = function () {
        var t = this;
        return t.$content.scrollTop() + 3 >= t.$contentItem.height() * t.$contentItem.length - t.$content.height()
    }, $(t).on("load.ydui.scrolltab", function () {
        $("[data-ydui-scrolltab]").each(function () {
            var e = $(this);
            e.scrollTab(t.YDUI.util.parseOptions(e.data("ydui-scrolltab")))
        })
    }), $.fn.scrollTab = i
}(window), function () {
    "use strict";

    function t(e, i) {
        this.$btn = $(e), this.options = $.extend({}, t.DEFAULTS, i || {})
    }

    function e(e) {
        var i = Array.prototype.slice.call(arguments, 1);
        return this.each(function () {
            var n = $(this), o = n.data("ydui.sendcode");
            o || (n.data("ydui.sendcode", o = new t(this, e)), "object" == typeof e && e.run && o.start()), "string" == typeof e && o[e] && o[e].apply(o, i)
        })
    }

    t.DEFAULTS = {
        run: !1,
        secs: 60,
        disClass: "",
        runStr: "{%s}秒后重新获取",
        resetStr: "重新获取验证码"
    }, t.timer = null, t.prototype.start = function () {
        var t = this, e = t.options, i = e.secs;
        t.$btn.html(t.getStr(i)).css("pointer-events", "none").addClass(e.disClass), t.timer = setInterval(function () {
            i--, t.$btn.html(t.getStr(i)), i <= 0 && (t.resetBtn(), clearInterval(t.timer))
        }, 1e3)
    }, t.prototype.getStr = function (t) {
        return this.options.runStr.replace(/\{([^{]*?)%s(.*?)\}/g, t)
    }, t.prototype.resetBtn = function () {
        var t = this, e = t.options;
        t.$btn.html(e.resetStr).css("pointer-events", "auto").removeClass(e.disClass)
    }, $.fn.sendCode = e
}();